The need for data storage has grown dramatically over the years, and the need has grown especially fast since the advent of public access to and business use of the Internet. Leading the drive for additional storage capacity are applications that use audio, video, and image data. Meeting the storage needs and satisfying the required quality of service of applications are major challenges faced by data centers. Example quality-of-service requirements include an expected response time and a minimum data transfer rate.
For a number of years disk arrays have been widely used for data storage. Disks are capable of storing a large quantity of data, and with configurations such as a RAID and data striping, the data stored in disk arrays are protected against hardware failure and a high rate of data transfer is achievable.
Different applications generate different types of storage access requests and generally access different data. A workload is the term used to refer to a set of related requests observed by a storage arrangement. A particular workload may be generated by one or more applications using the storage arrangement. The requests of a workload may be logically related, for example, requests from similar types of applications, or physically related, for example, requests that reference the same area of storage.
In some storage arrangements optimization is based on maximizing the overall performance of a particular disk array, irrespective of different quality-of-service requirements of the workloads. For example, specific configurations are established for a storage array and data are striped across multiple disks to achieve an overall data transfer rate. Data addressed by a workload that requires a high throughput or low response time may be striped over more disks than data addressed by a workload that requires lower throughput or a greater response time.
This approach, however, does not address the situation in which different workloads have different quality-of-service requirements. Storage arrays do not distinguish between different workloads that address the same data. Thus, all the workloads that address the same data will receive the same quality of service even though the workloads might have different quality of service requirements. Workloads demanding a lower quality of service may receive a quality of service that is better than necessary at the expense of workloads demanding a higher quality of service.
Another drawback is that quality-of-service requirements may change dynamically, and the changes may occur faster than the storage array can be reconfigured to address new requirements. Also, reconfiguration may temporarily degrade performance. Furthermore, the data access patterns of a workload may be unknown or poorly understood. Thus, suitably configuring the storage array prior to operation may not be feasible.
A system and method that address the aforementioned problems, as well as other related problems, are therefore desirable.